//友好城市
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=5000;
struct CityPair
{
    int x,y;
    bool operator <(const CityPair other) const{
        return x<other.x;
    }
};
CityPair paires[MAXN+1];
int n;
int k,d[MAXN+1];

int main(){
    cin>>n;
    for(int i=0;i<n;i++) {
        int x,y;
        cin>>x>>y;
        paires[i].x=x;
        paires[i].y=y;
    }
    sort(paires,paires+n);//排完序后，其实就是求最长的递增子序列（y递增）；可用动规，也可贪心
    //此处用了贪心
    k=1;
    d[0]=paires[0].y;
    for(int i=1;i<n;i++){
        if (paires[i].y>d[k-1]) d[k++]=paires[i].y;
        else {
            int p=upper_bound(d,d+k,paires[i].y)-d;
            d[p]=paires[i].y;
        }
    }
    cout<<k;
}

